home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Micro on the Apple Volume 2 (1981)(Micro Ink).zip / Micro on the Apple Volume 2 (1981)(Micro Ink).do / GALACTI-CUBE.int < prev    next >
Text File  |  1996-12-24  |  7KB  |  226 lines

  1. 10 REM  ************************
  2. 12 REM  *                      *
  3. 14 REM  *     GALACTI-CUBE     *
  4. 16 REM  *     R.J.  BISHOP     *
  5. 18 REM  *                      *
  6. 20 REM  *  COPYRIGHT (C) 1981  *
  7. 22 REM  *    MICRO INK, INC.   *
  8. 24 REM  * CHELMSFORD, MA 01824 *
  9. 26 REM  *  ALL RIGHTS RESERVED *
  10. 27 REM  *                      *
  11. 28 REM  ************************
  12. 29 REM 
  13. 30 DIM BOX(27),QUE(27),NODE(6),BIT(6),A$(5)
  14. 40 GOSUB 9000
  15. 50 GOSUB 1000
  16. 60 VTAB 23:TAB 5:PRINT "(HIT ANY KEY TO START THE GAME) <CTRL-G>";
  17. 70 GOSUB 4000:GOSUB 5000
  18. 90 LOC=14:OLD=LOC:FUEL=40
  19. 100 REM MAIN LOOP
  20. 110 GOSUB 2000
  21. 150 CALL -936:PRINT :PRINT :PRINT "   COMMAND:"
  22. 160 PRINT :TAB 7:GOSUB 4000:CALL -936
  23. 165 IF A$="" THEN 150
  24. 170 IF A$(1,1)#"F" THEN 250
  25. 180 CALL -936:PRINT :PRINT "  YOU HAVE ";FUEL
  26. 190 PRINT :PRINT "  FUEL UNITS"
  27. 210 FOR K=1 TO 1000:NEXT K:GOTO 150
  28. 250 Z=(OLD-1)/9+1
  29. 260 Y=(((OLD-1)/3) MOD 3)+1
  30. 270 X=((OLD-1) MOD 3)+1
  31. 300 IF A$="E" THEN X=X+1
  32. 310 IF A$="W" THEN X=X-1
  33. 320 IF A$="N" THEN Y=Y+1
  34. 330 IF A$="S" THEN Y=Y-1
  35. 340 IF A$="U" THEN Z=Z+1
  36. 350 IF A$="D" THEN Z=Z-1
  37. 360 LOC=X+3*(Y-1)+9*(Z-1)
  38. 370 IF LOC<>OLD THEN 390
  39. 380 PRINT "<CTRL-G>":GOTO 150
  40. 390 IF X<1 OR X>3 OR Y<1 OR Y>3 THEN 700
  41. 400 IF BOX(OLD)>=32 AND Z=0 THEN 800
  42. 410 VAL=BOX(OLD):IF VAL>=32 THEN VAL=VAL-32
  43. 420 IF VAL>=16 AND Z=4 THEN 800
  44. 430 IF Z<1 OR Z>3 THEN 700
  45. 450 BITS=BOX(OLD)
  46. 460 WAY=BITS-2*(BITS/2):BITS=BITS/2
  47. 470 IF WAY=0 AND A$="E" THEN 700
  48. 480 WAY=BITS-2*(BITS/2):BITS=BITS/2
  49. 490 IF WAY=0 AND A$="W" THEN 700
  50. 500 WAY=BITS-2*(BITS/2):BITS=BITS/2
  51. 505 IF WAY=0 AND A$="N" THEN 700
  52. 510 WAY=BITS-2*(BITS/2):BITS=BITS/2
  53. 515 IF WAY=0 AND A$="S" THEN 700
  54. 520 WAY=BITS-2*(BITS/2):BITS=BITS/2
  55. 525 IF WAY=0 AND A$="U" THEN 700
  56. 530 WAY=BITS-2*(BITS/2):BITS=BITS/2
  57. 535 IF WAY=0 AND A$="D" THEN 700
  58. 540 WAY=BITS-2*(BITS/2):BITS=BITS/2
  59. 550 FUEL=FUEL-1:IF FUEL>0 THEN 100
  60. 560 CALL -936:PRINT "   <CTRL-G>Y<CTRL-G>O<CTRL-G>U<CTRL-G> <CTRL-G>A<CTRL-G>R<CTRL-G>E<CTRL-G>"
  61. 565 PRINT 
  62. 570 PRINT "   <CTRL-G>O<CTRL-G>U<CTRL-G>T<CTRL-G> <CTRL-G>O<CTRL-G>F<CTRL-G>"
  63. 575 PRINT 
  64. 580 PRINT "    <CTRL-G>F<CTRL-G>U<CTRL-G>E<CTRL-G>L<CTRL-G>!<CTRL-G>";
  65. 590 GOTO 830
  66. 700 CALL -936:PRINT "<CTRL-G> THAT DIREC-"
  67. 710 PRINT :PRINT " TION HAS AN"
  68. 720 PRINT :PRINT " OBSTRUCTION<CTRL-G>";
  69. 730 FOR K=1 TO 1000:NEXT K:GOTO 150
  70. 800 CALL -936:PRINT "<CTRL-G>Y<CTRL-G>O<CTRL-G>U<CTRL-G> <CTRL-G>F<CTRL-G>O<CTRL-G>U<CTRL-G>N<CTRL-G>D<CTRL-G> <CTRL-G>T<CTRL-G>H<CTRL-G>E<CTRL-G>"
  71. 810 PRINT :PRINT " <CTRL-G>E<CTRL-G>X<CTRL-G>I<CTRL-G>T<CTRL-G> <CTRL-G>I<CTRL-G>N<CTRL-G> <CTRL-G>O<CTRL-G>N<CTRL-G>L<CTRL-G>Y<CTRL-G>"
  72. 820 PRINT :PRINT "  ";41-FUEL;"<CTRL-G> <CTRL-G>M<CTRL-G>O<CTRL-G>V<CTRL-G>E<CTRL-G>S<CTRL-G>!<CTRL-G>";
  73. 830 GOSUB 2700
  74. 840 FOR K=1 TO 2500:NEXT K
  75. 850 CALL -936:END 
  76. 900 END 
  77. 1000 REM GENERATE THE MAZE
  78. 1010 FOR K=1 TO 27
  79. 1020 BOX(K)=128
  80. 1030 NEXT K
  81. 1040 BOX(14)=0
  82. 1050 QUE(1)=14:QBIG=1
  83. 1060 XQBIG=1
  84. 1100 FOR K=1 TO QBIG
  85. 1110 IND=QUE(K)
  86. 1140 KNT=0:ROAD=1:DEL=1
  87. 1150 FOR J=0 TO 2
  88. 1160 SET=3*DEL
  89. 1170 FOR L=0 TO 1
  90. 1180 NDX=IND+DEL
  91. 1190 IF NDX<1 THEN 1400
  92. 1200 IF (NDX-1)/SET<>(IND-1)/SET THEN 1400
  93. 1250 IF BOX(NDX)<128 THEN 1400
  94. 1300 KNT=KNT+1:NODE(KNT)=NDX:BIT(KNT)=ROAD
  95. 1400 DEL=-DEL:ROAD=ROAD+ROAD
  96. 1450 NEXT L
  97. 1460 DEL=SET
  98. 1470 NEXT J
  99. 1500 IF KNT=0 THEN 1600
  100. 1510 NDX= RND (KNT)+1:XQBIG=XQBIG+1
  101. 1520 QUE(XQBIG)=NODE(NDX)
  102. 1530 BOX(IND)=BOX(IND)+BIT(NDX)
  103. 1540 TIB=2*BIT(NDX)
  104. 1550 IF TIB=4 OR TIB=16 OR TIB=64 THEN TIB=TIB/4
  105. 1590 BOX(NODE(NDX))=BOX(NODE(NDX))+TIB-128
  106. 1600 NEXT K
  107. 1610 QBIG=XQBIG:IF QBIG<27 THEN 1100
  108. 1700 HOLE=2* RND (2)+6* RND (2)+18* RND (2)+1
  109. 1710 OPEN=16:IF HOLE<14 THEN OPEN=32
  110. 1720 BOX(HOLE)=BOX(HOLE)+OPEN
  111. 1800 RETURN 
  112. 2000 REM UPDATE THE DISPLAY
  113. 2005 GOSUB 2700
  114. 2010 Z=(OLD-1)/9+1
  115. 2020 Y=(((OLD-1)/3) MOD 3)+1
  116. 2030 X=((OLD-1) MOD 3)+1
  117. 2040 VTAB 13-Y-Y
  118. 2050 TAB 8*Z+X+X-7
  119. 2060 PRINT "-"
  120. 2110 Z=(LOC-1)/9+1
  121. 2120 Y=(((LOC-1)/3) MOD 3)+1
  122. 2130 X=((LOC-1) MOD 3)+1
  123. 2140 VTAB 13-Y-Y
  124. 2150 TAB 8*Z+X+X-7
  125. 2170  POKE  PEEK (36)+ PEEK (40)+256* PEEK (41),109
  126. 2200 BITS=BOX(LOC)
  127. 2210 VT=20:T=34:A$="EAST":GOSUB 2500
  128. 2220 VT=22:T=34:A$="WEST":GOSUB 2500
  129. 2230 VT=20:T=28:A$="NORTH":GOSUB 2500
  130. 2240 VT=22:T=28:A$="SOUTH":GOSUB 2500
  131. 2250 VT=20:T=24:A$="UP":GOSUB 2500
  132. 2260 VT=22:T=23:A$="DOWN":GOSUB 2500
  133. 2300 GOSUB 2600
  134. 2400 OLD=LOC
  135. 2450 RETURN 
  136. 2500 WAY=BITS-2*(BITS/2):BITS=BITS/2
  137. 2510 MODE=127:IF WAY THEN MODE=255
  138. 2520  POKE 50,MODE:VTAB VT:TAB T:PRINT A$: POKE 50,255
  139. 2550 RETURN 
  140. 2600 VTAB 19:TAB 5
  141. 2610  POKE 32,2
  142. 2630  POKE 33,14
  143. 2660  POKE 34,17
  144. 2680  POKE 35,22
  145. 2690 RETURN 
  146. 2700  POKE 32,0
  147. 2710  POKE 33,40
  148. 2720  POKE 34,0
  149. 2730  POKE 35,24
  150. 2750 RETURN 
  151. 4000 REM 'GET' FROM THE KEYBOARD
  152. 4010  POKE -16368,0
  153. 4020 CHAR= PEEK (-16384):IF CHAR<128 THEN 4020
  154. 4030  POKE -16368,0:A$="?"
  155. 4080 IF CHAR=141 THEN A$=""
  156. 4090 IF CHAR=196 THEN A$="D"
  157. 4100 IF CHAR=197 THEN A$="E"
  158. 4110 IF CHAR=198 THEN A$="F"
  159. 4120 IF CHAR=206 THEN A$="N"
  160. 4130 IF CHAR=211 THEN A$="S"
  161. 4140 IF CHAR=213 THEN A$="U"
  162. 4150 IF CHAR=215 THEN A$="W"
  163. 4200 RETURN 
  164. 5000 REM DRAW DISPLAY
  165. 5010 CALL -936:PRINT "      YOUR LOCATION           COMPASS"
  166. 5020 PRINT :PRINT "  (BOT)   (MID)   (TOP)      REFERENCE"
  167. 5030 PRINT :TAB 34:PRINT "N"
  168. 5040 PRINT :TAB 34:PRINT "!"
  169. 5050 TAB 34:PRINT "!"
  170. 5060 TAB 29:PRINT "W <--*--> E"
  171. 5070 TAB 34:PRINT "!"
  172. 5080 TAB 34:PRINT "!"
  173. 5090 PRINT :TAB 34:PRINT "S"
  174. 5100 VTAB 6
  175. 5110 FOR K=1 TO 3
  176. 5120 PRINT :PRINT "  - - -   - - -   - - -"
  177. 5130 NEXT K
  178. 5140 VTAB 16:TAB 21:PRINT "OBSTRUCTION SENSORS"
  179. 5200  POKE 50,63
  180. 5210 VTAB 5:PRINT "                         "
  181. 5220 FOR K=1 TO 7
  182. 5230 PRINT " ";:TAB 9:PRINT " ";:TAB 17:PRINT " ";:TAB 25:PRINT " "
  183. 5240 NEXT K
  184. 5250 PRINT "                         "
  185. 5300 VTAB 18:TAB 21:PRINT "                   "
  186. 5310 FOR K=1 TO 5
  187. 5320 TAB 21:PRINT " ";:TAB 39:PRINT " "
  188. 5330 NEXT K
  189. 5340 TAB 21:PRINT "                   ";
  190. 5400 VTAB 15:PRINT 
  191. 5410 PRINT "                  "
  192. 5420 FOR K=1 TO 7
  193. 5430 PRINT " ";:TAB 18:PRINT " "
  194. 5440 NEXT K
  195. 5450 PRINT "                  ";
  196. 5500  POKE 50,255
  197. 5900 RETURN 
  198. 9000 CALL -936:VTAB 10
  199. 9010 TAB 10:PRINT "*** GALACTI-CUBE ***"
  200. 9020 PRINT :TAB 19:PRINT "BY"
  201. 9030 PRINT :TAB 14:PRINT "ROBERT BISHOP"
  202. 9040 FOR K=1 TO 1500:NEXT K
  203. 9050 CALL -936
  204. 9110 PRINT "     YOU ARE THE CAPTAIN OF A STAR-SHIP"
  205. 9120 PRINT "EXPLORING THE OUTER LIMITS OF OUR UNI-"
  206. 9130 PRINT "VERSE.  YOU HAVE DISCOVERED A GIGANTIC"
  207. 9140 PRINT "CUBE FLOATING IN SPACE.  THROUGH THE"
  208. 9150 PRINT "ONLY OPENING YOU HAVE FLOWN YOUR SHIP"
  209. 9160 PRINT "INSIDE, BUT NOW YOU CAN'T FIND YOUR WAY"
  210. 9170 PRINT "BACK OUT!"
  211. 9190 PRINT "     FROM YOUR EXPLORATIONS YOU HAVE"
  212. 9200 PRINT "LEARNED THAT THE CUBE IS DIVIDED INTO"
  213. 9210 PRINT "AN ARRAY OF 3X3X3 CUBICAL COMPARTMENTS"
  214. 9220 PRINT "AND YOU ARE CURRENTLY IN THE CENTER-"
  215. 9230 PRINT "MOST ONE."
  216. 9250 PRINT "     YOUR SHIP IS EQUIPPED WITH A DIS-"
  217. 9260 PRINT "PLAY INDICATING YOUR LOCATION.  THE"
  218. 9270 PRINT "OBSTRUCTION SENSORS INDICATE WHICH DI-"
  219. 9280 PRINT "RECTIONS (FLASHING) ARE BLOCKED.  YOU"
  220. 9310 PRINT "MOVE YOUR SHIP BY HITTING THE FIRST"
  221. 9320 PRINT "LETTER OF THE DIRECTION YOU WANT TO GO."
  222. 9330 PRINT "YOUR FUEL SUPPLY (WHICH IS DISPLAYED BY"
  223. 9340 PRINT "HITTING THE LETTER, F) WILL ONLY LET"
  224. 9350 PRINT "YOU MAKE UP TO 40 MOVES.  GOOD LUCK!"
  225. 9999 RETURN 
  226.